package org.iteam.bank.signed.service;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.iteam.bank.mina.client.ResultMessage;
import org.iteam.bank.signed.model.P2PUserInfo;
import org.iteam.db.SimpleDbRunner;
import org.iteam.db.exception.DbException;
import org.iteam.mina.Constant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class SignedService {
	private static final Logger logger = LoggerFactory.getLogger(SignedService.class);

	private SignedService() {
		super();
	}

	public static SignedService getInstance() {
		return Subclass.service;
	}

	private static final class Subclass {
		public static final SignedService service = new SignedService();
	}

	/**
	 * 农商行绑卡处理
	 * 
	 * @param p2p_user_id
	 *            用户ID
	 * @param mobile
	 *            手机号码
	 * @param bankCard
	 *            银行卡号
	 * @param name
	 *            持卡人姓名
	 * @param bankType
	 *            银行编码
	 * @param bankName
	 *            银行名称
	 * @param idCard
	 *            身份证号码
	 * @param captcha
	 *            验证码
	 * @param seqCode
	 *            验证码序号
	 * @param province
	 *            省份
	 * @param city
	 *            城市
	 * @param bankBranchNo
	 *            联行号
	 * @param bankBranchName
	 *            联行名称
	 * @param isRCB
	 *            是否农商行
	 * @param ip
	 *            绑卡IP
	 * @param errorMsg
	 *            错误消息
	 * @return -1:失败 ,1:成功,2:处理中,0:已绑定
	 */
	public int bindCard(String p2p_user_id, String mobile, String bankCard, String name, String bankType, String bankName, String idCard, String captcha,
			String seqCode, String province, String city, String bankBranchNo, String bankBranchName, boolean isRCB, String ip, StringBuffer errorMsg)
			throws DbException {
		SimpleDbRunner dbRunner = null;
		SimpleDbRunner dbRunner_pay = null;
		final String createBy = "PC";
		boolean dbResult = false;
		// 未认证(审核失败也是0)
		long currentTimeMillis = System.currentTimeMillis();
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String currentTime = format.format(currentTimeMillis);
		long shortCurrentTime = currentTimeMillis / 1000;
		P2PUserInfo p2pUserInfo = null;
		try {
			// TODO 强制修改
			province = city;
			/********************** 银行绑卡业务处理流程【开始】 **********************/
			// 判断是否已经绑卡
			// 01：已绑卡 ==> 不处理， 返回已经绑卡提示
			// 02：审核中 ==> 不处理， 返回已经绑卡处理中提示
			// 03：未绑卡==> 记录绑卡信息【当前状态为：待审核（银行处理中）】,提交数据库事物
			// 03--(如果已经存在绑卡记录但状态为未认证的数据做更新，不存在绑卡记录则做添加处理)
			// 提交银行处理，判断响应结果
			// 01: 农商行处理中 ==> 不处理， 返回已经绑卡处理中提示
			// 02：绑卡成功 ==> 更新绑卡状态及协议号、电子帐号【当前状态为：已绑卡】。
			// 03：绑卡失败==> 更新绑卡状态【当前状态为：未认证】
			/********************** 银行绑卡业务处理流程【结束】 **********************/

			dbRunner = new SimpleDbRunner(true);
			dbRunner_pay = new SimpleDbRunner(org.iteam.bank.core.Constant.MYSQL_PAY, true);

			// 判断用户是否已经提交过绑卡信息
			p2pUserInfo = P2PUserService.getInstance().showById(dbRunner, p2p_user_id);
			// 2审核中 1为已认证，0为未认证，默认为0
			if (p2pUserInfo.getCardNoStatus().intValue() == 1) {
				errorMsg.append("您的帐号已经绑定过银行卡");
				return 0;
			} else if (p2pUserInfo.getCardNoStatus().intValue() == 2) {
				errorMsg.append("您的银行卡绑定正在处理中，请勿重复绑卡");
				return 2;
			}

			// 表名:P2P_USER 解释:P2P会员（重要、会员注册认证等主要信息）
			// UPDATEBY 最近一次更新人 VARCHAR(32) 32 是 平台固有字段
			// UPDATETIME 最近一次更新时间 DATETIME 是 NULL 平台固有字段
			// CARDNO 银行卡号码 VARCHAR(22) 22 是
			// CARDNOSTATUS 银行卡认证 INT(11) 11 是 NULL 2审核中 1为已认证，0为未认证，默认为0
			// IDCARD 身份证认证 VARCHAR(18) 18 是 2审核中 1为已认证，0为未认证，默认为0
			// IDCARDSTATUS 实名认证状态 INT(11) 11 是 NULL 0 未认证 1 已认证
			// MODIFY 修改次数 INT(11) 11 是 NULL
			// TRUENAME 真实姓名 VARCHAR(40) 40 是
			StringBuffer sql_p2p_user = new StringBuffer("update  p2p_user set updateTime = ?,version=version+1,modify=modify+1 , ");
			sql_p2p_user.append(" updateBy = ?,cardno = ? , cardnoStatus = ? , idcard = ? , idcardStatus = ? , truename = ?   where id = ? ");
			List<Object> params_p2p_user = new ArrayList<Object>();
			params_p2p_user.add(currentTime);
			params_p2p_user.add(createBy);
			params_p2p_user.add(bankCard);
			params_p2p_user.add(2);
			params_p2p_user.add(idCard);
			params_p2p_user.add(2);
			params_p2p_user.add(name);
			params_p2p_user.add(p2p_user_id);
			// 01-更新p2p_user信息
			dbResult = dbRunner.update(sql_p2p_user.toString(), params_p2p_user.toArray()) == 1;
			// 表名:P2P_ACCOUNT_BANK 解释:P2P会员银行卡绑定信息（重要、银行绑卡基础数据）
			// ID 自动编号 VARCHAR(32) 32
			// CREATEBY 创建人 VARCHAR(32) 32 是 平台固有字段
			// CREATETIME 创建时间 DATETIME 是 NULL 平台固有字段
			// DELETETIME 删除时间 DATETIME 是 NULL 平台固有字段
			// ISDELETED 是否删除 TINYINT(1) 1 是 NULL 平台固有字段
			// UPDATEBY 最近一次更新人 VARCHAR(32) 32 是 平台固有字段
			// UPDATETIME 最近一次更新时间 DATETIME 是 NULL 平台固有字段
			// VERSION 版本号 INT(11) 11 是 NULL 平台固有字段
			// ADDRESS 详细地址 VARCHAR(500) 500 是
			// AREA 地区 INT(11) 11 是 NULL
			// BANKCARDTYPE 银行卡类型 INT(11) 11 是 NULL 0 储蓄卡 1 信用卡
			// BANKCODE 银行编码 VARCHAR(32) 32 是
			// BANKNAME 银行名 VARCHAR(32) 32 是
			// BRANCH 支行 VARCHAR(150) 150 是
			// CARDNO 银行卡号 VARCHAR(50) 50 是 真实银行卡账户，可为他行与农商行
			// CHECKRESULT 审核结果 INT(11) 11 是 NULL 0 不通过 1 通过 -1 待审核
			// CHECKTIME 审核时间 BIGINT(20) 20 是 NULL 0 不通过 1 通过 -1 待审核
			// CHECKUSER 审核人 VARCHAR(50) 50 是
			// CITY 城市 INT(11) 11 是 NULL
			// ENABLE 可用 INT(11) 11 是 NULL
			// IP 绑定机器ip VARCHAR(100) 100 是
			// PROVINCE 省份 INT(11) 11 是 NULL
			// REMARK 审核备注 VARCHAR(150) 150 是
			// BANK_ID 银行ID VARCHAR(32) 32 是
			// P2PUSERID 会员ID VARCHAR(32) 32 是
			// ECARDNO 电子账户号 VARCHAR(50) 50 是 农商行电子账户
			// AUTHORIZEDENTERPRISENAME 认证企业名称 VARCHAR(150) 150 是
			// PROTOCOLNO 协议号 VARCHAR(50) 50 是

			// 02-判断是否有绑卡信息
			String sql_p2p_account_bank_query = "select  checkResult from p2p_account_bank where p2pUserId = ? ";

			if (dbResult) {
				Integer checkResult = dbRunner.findColumnOne(Integer.class, sql_p2p_account_bank_query, p2p_user_id);
				if (checkResult != null) {
					StringBuffer sql_p2p_account_bank_update = new StringBuffer("update p2p_account_bank   set updateTime = ?,version=version+1, updateBy = ?,");
					sql_p2p_account_bank_update
							.append("bankCardType= ?,bankCode= ?,bankName= ?,branch= ?,cardno= ?,city= ?,enable= ?,ip= ?,province= ?,bank_id=?,");
					sql_p2p_account_bank_update
							.append("checkResult = ? , checkTime = ? , checkUser = ?, eCardNo = ?, protocolNo = ? ,remark=?  where p2pUserId = ? ");
					List<Object> params = new ArrayList<Object>();
					params.add(currentTime);
					params.add(createBy);
					params.add(0);
					params.add(bankType);
					params.add(bankName);
					params.add(bankBranchNo);
					params.add(bankCard);
					params.add(city);
					params.add(1);
					params.add(ip);
					params.add(province);
					params.add(bankType);
					params.add(-1);
					params.add(shortCurrentTime);
					params.add(createBy);
					params.add(null);
					params.add(null);
					params.add(null);
					params.add(p2p_user_id);
					dbResult = dbResult & (dbRunner.update(sql_p2p_account_bank_update.toString(), params.toArray()) == 1);
				} else {
					// 添加 P2P会员银行卡绑定信息
					StringBuffer sql_p2p_account_bank_columnNames = new StringBuffer();
					sql_p2p_account_bank_columnNames.append("address,area,bankCardType,bankCode,bankName,branch,cardno,checkResult,checkTime,checkUser,");
					sql_p2p_account_bank_columnNames.append("city,enable,ip,province,remark,bank_id,p2pUserId,eCardNo,authorizedEnterpriseName,protocolNo");
					String sql_p2p_account_bank = ZDSQL.sql("p2p_account_bank", sql_p2p_account_bank_columnNames.toString());
					List<Object> params = ZDSQL.initParams(p2p_user_id, "weixin", currentTime);
					params.add(null);
					params.add(null);
					params.add(0);
					params.add(bankType);
					params.add(bankName);
					params.add(bankBranchNo);
					params.add(bankCard);
					params.add(-1);
					params.add(shortCurrentTime);
					params.add(createBy);
					params.add(city);
					params.add(1);
					params.add(ip);
					params.add(province);
					params.add(null);
					params.add(bankType);
					params.add(p2p_user_id);
					params.add(null);
					params.add(null);
					params.add(null);
					dbResult = dbResult & (dbRunner.update(sql_p2p_account_bank, params.toArray()) == 1);
				}
			}
			// 表名:P2P_USER_IDENTITY 解释:P2P会员实名认证（重要、会员实名认证信息）
			// ID 自动编号 VARCHAR(32) 32
			// CREATEBY 创建人 VARCHAR(32) 32 是
			// CREATETIME 创建时间 DATETIME 是 NULL
			// DELETETIME 删除时间 DATETIME 是 NULL
			// ISDELETED 是否删除 TINYINT(1) 1 是 NULL
			// UPDATEBY 最近一次更新人 VARCHAR(32) 32 是
			// UPDATETIME 最近一次更新时间 DATETIME 是 NULL
			// VERSION 版本号 INT(11) 11 是 NULL
			// CHECKRESULT 审核结果 INT(11) 11 是 NULL 0是不通过 1是通过 -1待审核
			// CHECKTIME 审核时间 BIGINT(20) 20 是 NULL
			// CHECKUSER 审核人 VARCHAR(255) 255 是
			// IDCARD 身份证号 VARCHAR(255) 255 是
			// IDENTITYTYPE 认证类型 INT(11) 11 是 NULL 1 实名认证 2手机认证 3 邮箱认证
			// REMARK 备注 VARCHAR(255) 255 是
			// TRUENAME 真实姓名 VARCHAR(255) 255 是
			// P2PUSER_ID 会员ID VARCHAR(32) 32 是

			// 03:判断是否有会员实名认证信息
			String sql_p2p_user_identity_query = "select checkResult from p2p_user_identity where p2pUser_id = ? ";
			if (dbResult) {
				Integer checkResult = dbRunner.findColumnOne(Integer.class, sql_p2p_user_identity_query, p2p_user_id);
				if (checkResult != null) {
					StringBuffer sql_p2p_user_identity_update = new StringBuffer("update p2p_user_identity set updateTime = ?,version=version+1, updateBy = ?,");
					sql_p2p_user_identity_update
							.append("checkResult=?,checkTime=?,checkUser=?,idCard=?,identityType=?,remark=?,trueName=? where p2pUser_id= ?");
					List<Object> params = new ArrayList<Object>();
					params.add(currentTime);
					params.add(createBy);
					params.add(-1);
					params.add(shortCurrentTime);
					params.add(createBy);
					params.add(idCard);
					params.add(1);
					params.add(null);
					params.add(name);
					params.add(p2p_user_id);
					dbResult = dbResult & (dbRunner.update(sql_p2p_user_identity_update.toString(), params.toArray()) == 1);

				} else {
					StringBuffer sql_p2p_user_identity_columnnames = new StringBuffer();
					sql_p2p_user_identity_columnnames.append("checkResult,checkTime,checkUser,idCard,identityType,remark,trueName,p2pUser_id");
					String sql_p2p_user_identity = ZDSQL.sql("p2p_user_identity", sql_p2p_user_identity_columnnames.toString());
					List<Object> params = ZDSQL.initParams(p2p_user_id, "weixin", currentTime);
					params.add(-1);
					params.add(shortCurrentTime);
					params.add(createBy);
					params.add(idCard);
					params.add(1);
					params.add(null);
					params.add(name);
					params.add(p2p_user_id);
					dbResult = dbResult & (dbRunner.update(sql_p2p_user_identity, params.toArray()) == 1);
				}
			}

			// pay_account
			// `id` int(11) NOT NULL AUTO_INCREMENT,
			// `account` varchar(32) DEFAULT NULL COMMENT
			// '业务平台账号(业务平台用户唯一标识)',
			// `pay_password` varchar(32) DEFAULT NULL COMMENT '支付密码',
			// `ecard_no` varchar(32) DEFAULT NULL COMMENT '电子账号',
			// `protocol_no` varchar(100) DEFAULT NULL COMMENT '协议号',
			// `name` varchar(32) DEFAULT NULL COMMENT '客户姓名',
			// `certificate_no` varchar(19) DEFAULT NULL,
			// `telephone` varchar(16) DEFAULT NULL COMMENT '手机号',
			// `card_type` int(11) DEFAULT NULL COMMENT '银行卡类型\n 1：重庆农商行\n
			// 0：其他',
			// `card_no` varchar(32) DEFAULT NULL COMMENT '绑定银行卡号',
			// `bank_name` varchar(32) DEFAULT NULL COMMENT '银行名',
			// `bank_id` int(11) DEFAULT NULL COMMENT '银行id',
			// `branch_bank_name` varchar(128) DEFAULT NULL COMMENT
			// '银行支行名称',
			// `branch_bank_no` varchar(32) DEFAULT NULL COMMENT '银行支行no',
			// `province_code` varchar(16) DEFAULT NULL COMMENT '绑定银行所在省份',
			// `city_code` varchar(16) DEFAULT NULL COMMENT '绑定银行所在城市',
			// `account_type` int(11) DEFAULT '0' COMMENT '账户类型:0个人 1企业',
			// `status` int(11) DEFAULT '0' COMMENT '账户状态:0成功 1待审核 2审核失败',

			String sql_pay_account_query = "select 'test' from pay_account where account = ? ";
			if (dbResult) {
				String checkResult = dbRunner_pay.findColumnOne(String.class, sql_pay_account_query, p2pUserInfo.getUserName());
				if (StringUtils.isNotBlank(checkResult)) {
					StringBuffer sql_pay_account_query_update = new StringBuffer("update pay_account set ecard_no = ?,protocol_no=?, name = ?,");
					sql_pay_account_query_update.append("certificate_no=?,telephone=?,card_type=?,card_no=?,bank_name=?,bank_id=?,branch_bank_name=?,");
					sql_pay_account_query_update.append("branch_bank_no=?,province_code=?,city_code=?,account_type=?,status=? where account= ?");
					List<Object> params = new ArrayList<Object>();
					params.add(null);
					params.add(null);
					params.add(name);
					params.add(idCard);
					params.add(mobile);
					params.add(isRCB ? 1 : 0);
					params.add(bankCard);
					params.add(bankName);
					params.add(bankType);
					params.add(bankBranchName);
					params.add(bankBranchNo);
					params.add(province);
					params.add(city);
					params.add(0);
					params.add(1);
					params.add(p2pUserInfo.getUserName());
					dbResult = dbResult & (dbRunner_pay.update(sql_pay_account_query_update.toString(), params.toArray()) == 1);

				} else {
					StringBuffer sql_pay_account = new StringBuffer("insert into pay_account(");
					sql_pay_account.append("account,pay_password,ecard_no,protocol_no,name,certificate_no,telephone,card_type,");
					sql_pay_account.append("card_no,bank_name,bank_id,branch_bank_name,branch_bank_no,province_code,city_code,account_type,");
					sql_pay_account.append("status)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
					List<Object> params = new ArrayList<Object>();
					params.add(p2pUserInfo.getUserName());
					params.add(null);
					params.add(null);
					params.add(null);
					params.add(name);
					params.add(idCard);
					params.add(mobile);
					params.add(isRCB ? 1 : 0);
					params.add(bankCard);
					params.add(bankName);
					params.add(bankType);
					params.add(bankBranchName);
					params.add(bankBranchNo);
					params.add(province);
					params.add(city);
					params.add(0);
					params.add(1);
					dbResult = dbResult & (dbRunner_pay.update(sql_pay_account.toString(), params.toArray()) == 1);
				}
			}
			if (dbResult) {
				dbRunner.commit();
				dbRunner_pay.commit();
			} else {
				dbRunner.rollback();
				dbRunner_pay.rollback();
			}
		} catch (DbException e) {
			if (dbRunner != null) {
				dbRunner.rollback();
			}
			if (dbRunner_pay != null) {
				dbRunner_pay.rollback();
			}
			dbResult = false;
			throw e;
		} finally {
			dbRunner = null;
			dbRunner_pay = null;
		}
		// 协议号
		String protocolNo = null;
		// 农商行电子帐号
		String eCardNo = null;
		int bankResult = -1;// -1:失败，0：处理中，1：成功

		if (dbResult) {
			try {
				ResultMessage res = GSPService.getInstance().bindingCard(name, bankCard, bankType, idCard, mobile, captcha, seqCode, province, city,
						bankBranchNo, bankBranchName, isRCB, p2p_user_id);
				if (res.isSuccess() && res.verify()) {
					res.decrypt();
					JSONObject jsonObject = JSON.parseObject(new String(res.getContent(), Constant.UTF_8));
					logger.debug("{},银行卡绑定结果:{}", idCard, jsonObject.toJSONString());
					// 协议号
					protocolNo = jsonObject.getString("protocolNo");
					eCardNo = jsonObject.getString("userBankAccount");
					bankResult = 1;
				} else {
					// 农商行子网关处理中【网络原因和银行中断】
					if (res.isProcessing()) {
						errorMsg.append("绑卡处理中，请稍候查询");
						bankResult = 0;
					} else {
						if (res.verify()) {
							res.decrypt();
							// 银行返回错误提示
							if (res.isBankResult()) {
								JSONObject jsonObject = JSON.parseObject(new String(res.getContent(), Constant.UTF_8));
								errorMsg.append(jsonObject.getString("returnStatusMsg"));
								logger.debug("{},银行卡绑定结果:{}", idCard, jsonObject.toJSONString());
							}
							if (res.isRCBBankResult()) {
								JSONObject jsonObject = JSON.parseObject(new String(res.getContent(), Constant.UTF_8));
								errorMsg.append(jsonObject.getString("returnCodeMsg"));
								logger.debug("{},银行卡绑定结果:{}", idCard, jsonObject.toJSONString());
							}
						}
					}
					bankResult = -1;
					logger.debug("{},银行卡绑定失败:{}", idCard, res.toString());
				}
			} catch (Exception e) {
				errorMsg.append("银行网关异常，请稍候重试");
				logger.error(e.getMessage(), e);
				bankResult = -1;

			}
			try {
				dbRunner = new SimpleDbRunner(true);
				dbRunner_pay = new SimpleDbRunner(org.iteam.bank.core.Constant.MYSQL_PAY, true);
				if (bankResult == 1 || bankResult == -1) {
					// 更改处理结果和写入协议号
					StringBuffer sql_p2p_user_update = new StringBuffer("update  p2p_user set updateTime = ?,version=version+1,modify=modify+1 , ");
					sql_p2p_user_update.append(" updateBy = ?,  cardnoStatus = ?  , idcardStatus = ?  where id = ? ");
					List<Object> params_p2p_user_update = new ArrayList<Object>();
					params_p2p_user_update.add(currentTime);
					params_p2p_user_update.add(createBy);
					// 银行卡认证 2审核中 ,1为已认证，0为未认证，默认为0
					params_p2p_user_update.add(bankResult == 1 ? 1 : 0);
					// // 实名认证状态 0 未认证 1 已认证
					params_p2p_user_update.add(bankResult == 1 ? 1 : 0);
					params_p2p_user_update.add(p2p_user_id);

					dbResult = dbResult && (dbRunner.update(sql_p2p_user_update.toString(), params_p2p_user_update.toArray()) == 1);

					if (isRCB) {
						eCardNo = bankCard;
					}
					StringBuffer sql_p2p_account_bank_update = new StringBuffer("update p2p_account_bank   set updateTime = ?,version=version+1, updateBy = ?,");
					sql_p2p_account_bank_update.append("checkResult = ? , checkTime = ? , checkUser = ?, eCardNo = ?, protocolNo = ?  where p2pUserId = ? ");
					List<Object> params_p2p_account_bank = new ArrayList<Object>();
					params_p2p_account_bank.add(currentTime);
					params_p2p_account_bank.add(createBy);
					// 0 不通过 1 通过 -1 待审核
					params_p2p_account_bank.add(bankResult == 1 ? 1 : 0);
					params_p2p_account_bank.add(shortCurrentTime);
					params_p2p_account_bank.add(createBy);
					params_p2p_account_bank.add(eCardNo);
					params_p2p_account_bank.add(protocolNo);
					params_p2p_account_bank.add(p2p_user_id);
					dbResult = dbResult & (dbRunner.update(sql_p2p_account_bank_update.toString(), params_p2p_account_bank.toArray()) == 1);

					StringBuffer sql_p2p_user_identity_update = new StringBuffer("update p2p_user_identity set updateTime = ?,version=version+1, updateBy = ?,");
					sql_p2p_user_identity_update.append("checkResult=?,checkTime=?,checkUser=? where p2pUser_id= ?");
					List<Object> params_p2p_user_identity = new ArrayList<Object>();
					params_p2p_user_identity.add(currentTime);
					params_p2p_user_identity.add(createBy);
					// // 0 不通过 1 通过 -1 待审核
					params_p2p_user_identity.add(bankResult == 1 ? 1 : 0);
					params_p2p_user_identity.add(shortCurrentTime);
					params_p2p_user_identity.add(createBy);
					params_p2p_user_identity.add(p2p_user_id);

					dbResult = dbResult & (dbRunner.update(sql_p2p_user_identity_update.toString(), params_p2p_user_identity.toArray()) == 1);

					StringBuffer sql_pay_account_query_update = new StringBuffer("update pay_account set ecard_no = ?,protocol_no=?,status=? where account= ?");
					List<Object> params_pay_account_query = new ArrayList<Object>();
					params_pay_account_query.add(eCardNo);
					params_pay_account_query.add(protocolNo);
					// 账户状态:0成功 1待审核 2审核失败
					params_pay_account_query.add(bankResult == 1 ? 0 : 0);
					params_pay_account_query.add(p2pUserInfo.getUserName());
					dbResult = dbResult & (dbRunner_pay.update(sql_pay_account_query_update.toString(), params_pay_account_query.toArray()) == 1);

					if (dbResult) {
						// 表名:P2P_ACCOUNT 解释:P2P会员账户汇总信息（非重要、会员银行卡余额信息）
						// 更新该表
						StringBuffer sql_p2p_account_update = new StringBuffer(
								"update p2p_account set updateTime = ?,version=version+1, updateBy = ?,accountName=?,isAuthorize=?  where id = ?");
						List<Object> params_p2p_account = new ArrayList<Object>();
						params_p2p_account.add(currentTime);
						params_p2p_account.add(createBy);
						params_p2p_account.add(eCardNo);
						params_p2p_account.add(bankResult == 1 ? 1 : 0);
						params_p2p_account.add(p2pUserInfo.getP2pAccount_id());
						dbResult = dbResult & (dbRunner.update(sql_p2p_account_update.toString(), params_p2p_account.toArray()) == 1);
					}

					if (dbResult) {
						dbRunner.commit();
						dbRunner_pay.commit();
						if (bankResult == -1) {
							return -1;
						} else {
							return 1;
						}
					}
					return 2;
				} else if (bankResult == 0) {
					dbRunner.rollback();
					dbRunner_pay.rollback();
					return 2;
				} else {
					dbRunner.rollback();
					dbRunner_pay.rollback();
					return -1;
				}
			} catch (DbException e) {
				if (dbRunner != null) {
					dbRunner.rollback();
				}
				if (dbRunner_pay != null) {
					dbRunner_pay.rollback();
				}
				throw e;
			} finally {
				dbRunner = null;
				dbRunner_pay = null;
			}
		} else {
			errorMsg.append("更新绑卡信息失败");
			return -1;
		}
	}
}
